package server;

//练习
//输出执行main方法的线程名字
//开启10个线程，分别命名为a1~a10
//每个线程运行时，输出自己线程的名字


////第一种方法：使用自定义的PracThread覆写run方法，通过对象.start()执行
//public class Threadpractice{
//	//练习
//	//1-输出执行main方法的线程名字
//	//2-开启10个线程，分别命名为a1~a10;
//	//3-每个线程运行时，输出自己线程的名字
//	public static void main(String[] args) {
//		PracThread t1 = new PracThread();
//		t1.start();
//	}
//	
//}
//class PracThread extends Thread{
//	@Override
//	public void run() {
//		System.out.println("第一种方法");
//	}
//}

//=====================================================================================

////第二种方法：自定MyRunnable类继承Runnable接口，覆写run方法，定义Thread对象，传入Runnable
////[这种方法不是多线程]
//public class Threadpractice{
//	public static void main(String[] args) {
//		System.out.println(Thread.currentThread().getName());//输出当前main线程的名字
//
//		for (int i = 0; i < 10; i++) {//十次循环，定义十个线程
//			Thread t = new Thread(new PracRunnable());
//			t.setName("a"+i);
//			t.start();
////			System.out.printf("a%d%n",i+1);
//			System.out.println(t.getName());
//		}
//	}
//}
//class PracRunnable implements Runnable{
//	@Override
//	public void run() {
////		System.out.println("第二种方法");
//	}
//}

//====================================================================================
//第三种方法：使用匿名内部类(官方版)
public class Threadpractice{
	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName());//输出当前main线程的名字

		for (int i = 0; i < 10; i++) {//十次循环，定义十个线程
			new Thread("a"+i) {			
				public void run() {
					System.out.println("--"+getName());
				};
			}.start();
		}
	}
}
//class PracRunnable implements Runnable{
//	@Override
//	public void run() {
////		System.out.println("第二种方法");
//	}
//}
//===================================================================================
////第四种方法：使用匿名内部类以及new Runnable
//public class Threadpractice{
//	public static void main(String[] args) {
//		System.out.println(Thread.currentThread().getName());//输出当前main线程的名字
//
//		for (int i = 0; i < 10; i++) {       //十次循环，定义十个线程
//			new Thread(new Runnable() {
//				@Override
//				public void run() {
//					System.out.println(Thread.currentThread().getName());//正确
//					//System.out.println(Thread.getName());//错误，因为此处Thread使用Runnable定义出来的一个普通类，没有getname方法
//				}
//			},"a"+i).start();
//		}
//	}
//}
////class PracRunnable implements Runnable{
////	@Override
////	public void run() {
//////		System.out.println("第二种方法");
////	}
////}
//=====================================================================================




































